// 判断是否是对象或数组
function isObject(obj) {
    return typeof obj === 'object' && obj !== null
}

function isEqual(obj1, obj2) {
    if (!isObject(obj1) || !isObject(obj2)) {
        // 值类型（注意，参与equal的一般不会是函数）
        return obj1 === obj2
    }
    if (obj1 === obj2) return true
    // 两个都是对象或数组，而且不相等
    const obj1Keys = Object.keys(obj1)
    const obj2Keys = Object.keys(obj2)
    if (obj1Keys.length !== obj2Keys.length) return false
    for (let key in obj1) {
        const res = isEqual(obj1[key], obj2[key])
        if (!res) {
            return false
        }
    }
    return true
}

// 效果如下
const obj1 = {a: 10, b: {x: 100, y: 200}}
const obj2 = {a: 10, b: {x: 100, y: 200}}
// console.log(obj1 === obj2)
console.log(isEqual(obj1, obj2))
